class MensajesController < ApplicationController
  before_filter :login_required, :except => [:index, :create_prueba]
  before_filter :comprueba_acceso

  # Acción en la que se muestra los mensajes de un regalo de forma paginada.
  def index
    if logged_in?
      evento = Evento.find(:first, :conditions => ["usuario_id = ? and regalo_id = ? and (tipo = ? or tipo = ?) and visto = ?", 
                                          current_usuario.id, @regalo.id, "rcmn-invitado", "rcmn-remitente", false])    
      evento.update_attributes(:visto => true) if evento
    end

    @num_mensajes = @regalo.mensajes.size
    @mensajes = @regalo.mensajes.paginate(:page => params[:page], :per_page => 10, :order => "created_at desc")
    

    if @mensajes.length > 0
      ultimo_mensaje = @mensajes[-1]

      if !ultimo_mensaje.visto? && !ultimo_mensaje.autor?(current_usuario)
        ultimo_mensaje.update_attributes(:visto_at => Time.now)
      end
    end
    respond_to do |format|
      format.html # index.rhtml
    end
  end
  
  # Metodo que permite que añadir un mensaje a un regalo.
  def create
    @mensaje = Mensaje.new(params[:mensaje])

    if (@mensaje.texto != "")
      @regalo.remitente_id == current_usuario.id ? @mensaje.autor = 'r' : @mensaje.autor = 'i'    
      @regalo.mensajes << @mensaje
    end

    respond_to do |format|
      if @mensaje.texto != "" && @mensaje.save
        flash[:notice] = 'Tu mensaje ha sido añadido.'        
      else
        flash[:error] = 'Tu mensaje no ha sido añadido.'
      end

      format.html { redirect_to regalo_mensajes_url(current_usuario.login, @regalo) }
    end
  end
  
  # Metodo que permite que añadir un mensaje a un regalo de prueba.
  def create_prueba
    @mensaje = Mensaje.new(params[:mensaje])

    if (@mensaje.texto != "")
      @rol == "remitente" ? @mensaje.autor = 'r' : @mensaje.autor = 'i'    
      @regalo.mensajes << @mensaje
    end

    respond_to do |format|
      format.html { redirect_to prueba_mensajes_path(:regalo_id =>@regalo, :hash => params[:hash]) }
    end    
  end
end
